import java.awt.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.*;
import java.awt.Panel;
public class Example {
public static void main(String[] args) {
//Frame
final JFrame frame = new JFrame("Converter");
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.setSize(400, 200);
//Panels
final JPanel mainPanel = new JPanel();
//Menu Bar
JMenuBar menuBar = new JMenuBar();
final JMenu temperature = new JMenu("Temperature");
final JMenu distance = new JMenu("Distance");
final JMenu other = new JMenu("Other");
menuBar.add(temperature);
menuBar.add(distance);
menuBar.add(other);
//Menu Items
final JMenuItem deg = new JMenuItem("Celsius & Fahrenheit");
final JMenuItem mile = new JMenuItem("Miles & Kilometers");
final JMenuItem yd = new JMenuItem("Yards & Meters");
final JMenuItem quit = new JMenuItem("Quit");
temperature.add(deg);
distance.add(mile);
distance.add(yd);
other.add(quit);
frame.setJMenuBar(menuBar);
//Labels
final JLabel input = new JLabel("Enter degrees: ");
final JLabel output = new JLabel(" ");
final JLabel result = new JLabel(" ");
//Text Fields
final JTextField degree = new JTextField(5);
//Buttons
ButtonGroup group = new ButtonGroup();
final JRadioButton fahrenheit = new JRadioButton("F");
final JRadioButton celsius = new JRadioButton("C");
group.add(fahrenheit);
group.add(celsius);
final JButton button = new JButton("Convert");
//Panel for meters
final JPanel meterPanel = new JPanel();
final JLabel inputDistance = new JLabel("Enter measurement: ");
final JLabel outputDistance = new JLabel(" ");
final JLabel resultDistance = new JLabel(" ");
final JTextField distanceBox = new JTextField(5);
ButtonGroup groupDistance = new ButtonGroup();
final JRadioButton meters = new JRadioButton("M");
final JRadioButton yards = new JRadioButton("Y");
groupDistance.add(meters);
groupDistance.add(yards);
JButton buttonDistance = new JButton("Convert");
//End Panel for meters
//Panel for Miles
final JPanel milePanel = new JPanel();
final JLabel inputMile = new JLabel("Enter measurement: ");
final JLabel outputMile = new JLabel(" ");
final JLabel resultMile = new JLabel(" ");
final JTextField mileBox = new JTextField(5);
ButtonGroup groupMile = new ButtonGroup();
final JRadioButton miles = new JRadioButton("Mi");
final JRadioButton kilometers = new JRadioButton("Ki");
groupMile.add(miles);
groupMile.add(kilometers);
JButton buttonMile = new JButton("Convert");
//End Panel for Miles
class ConvertListener implements ActionListener{
public void actionPerformed(ActionEvent event){
if(fahrenheit.isSelected()){
double f = Double.parseDouble(degree.getText());
double c = (f-32)*5/9;
result.setText(c+"");
output.setText("Degrees in Celsius: ");
}else if(celsius.isSelected()){
double c = Double.parseDouble(degree.getText());
double f = c*5/9+32;
result.setText(f+"");
output.setText("Degrees in Fahrenheit: ");
}else if(meters.isSelected()){
double m = Double.parseDouble(distanceBox.getText());
double y = m*1.09361;
resultDistance.setText(y+"");
outputDistance.setText("Distance in Yards: ");
}else if(yards.isSelected()){
double y = Double.parseDouble(distanceBox.getText());
double m = y*0.9144;
resultDistance.setText(m+"");
outputDistance.setText("Distance in Meters: ");
}else if(miles.isSelected()) {
double m = Double.parseDouble(mileBox.getText());
double km = m * 1.60934;
resultMile.setText(km + "");
outputMile.setText("Distance in Kilometers: ");
}else if(kilometers.isSelected()) {
double km = Double.parseDouble(mileBox.getText());
double m = km * 0.621371;
resultMile.setText(m + "");
outputMile.setText("Distance in Miles: ");
}
}
}
ActionListener listener = new ConvertListener();
button.addActionListener(listener);
JPanel panel1 = new JPanel();
JPanel panel2 = new JPanel();
JPanel panel3 = new JPanel();
panel1.add(input);
panel1.add(degree);
panel1.add(fahrenheit);
panel1.add(celsius);
panel2.add(button);
panel3.add(output);
panel3.add(result);
mainPanel.setLayout(new GridLayout(3,1));
mainPanel.add(panel1);
mainPanel.add(panel2);
mainPanel.add(panel3);
frame.add(mainPanel);
frame.setVisible(true);
//End of Page 1
//Yrds and Meters Panel
final JPanel distancePanel = new JPanel();
buttonDistance.addActionListener(listener);
distancePanel.add(inputDistance);
distancePanel.add(distanceBox);
distancePanel.add(meters);
distancePanel.add(yards);
distancePanel.add(buttonDistance);
distancePanel.add(outputDistance);
distancePanel.add(resultDistance);
//Miles and Kilo Panel
final JPanel miKi = new JPanel();
buttonMile.addActionListener(listener);
miKi.add(inputMile);
miKi.add(mileBox);
miKi.add(miles);
miKi.add(kilometers);
miKi.add(buttonMile);
miKi.add(outputMile);
miKi.add(resultMile);
class MenuListener implements ActionListener{
public void actionPerformed(ActionEvent event){
JMenuItem source = (JMenuItem) event.getSource();
if(source == mile){
frame.remove(mainPanel);
frame.remove(distancePanel);
frame.add(miKi);
frame.invalidate();
frame.validate();
frame.repaint();
}else if(source == deg){
frame.remove(distancePanel);
frame.remove(mainPanel);
frame.remove(miKi);
frame.add(mainPanel);
frame.invalidate();
frame.validate();
frame.repaint();
}else if(source == yd){
frame.remove(distancePanel);
frame.remove(mainPanel);
frame.remove(miKi);
frame.add(distancePanel);
frame.invalidate();
frame.validate();
frame.repaint();
}else if(source == quit){
JOptionPane.showMessageDialog(frame, "Sorry, cannot quit.");
}
}
}
ActionListener menuListener = new MenuListener();
deg.addActionListener(menuListener);
mile.addActionListener(menuListener);
yd.addActionListener(menuListener);
quit.addActionListener(menuListener);
}
}